[CLX][#01] Animation - Price Ticker (Marquee)This indicator displays a classic animated price ticker overlaid on the user’s current chart. It is possible to fully customize it or to select one of the predefined styles.
A detailed description will follow in the next few days.
Used Pinescript technics:
- varip (view/animation)
- tulip instance (config/codestructur)
- table (view/position)
By the way, for me, one of the coolest animated effects is by Duyck
We hope you enjoy it! 🎉
CRYPTOLINX - jango_blockchained 😊👍
Disclaimer:
Trading success is all about following your trading strategy and the indicators should fit within your trading strategy, and not to be traded upon solely.
The script is for informational and educational purposes only. Use of the script does not constitute professional and/or financial advice. You alone have the sole responsibility of evaluating the script output and risks associated with the use of the script. In exchange for using the script, you agree not to hold dgtrd TradingView user liable for any possible claim for damages arising from any decision you make based on use of the script.
In den Scripts nach "the script" suchen
Impact Zones - Skylyne InvestingWhat is the Impact Zone system:
The creation of Impact Zones started with our love for trading the Bond Market. Impact Zones were originally specifically tailored for the Bond market and now have been mastered to capture most of the Asset Classes out in the market today (Please look at Impact Zone Settings section for asset classes covered by this script). The Impact Zone system is a zone break (or market level break) following system with specific take profit points already established for you on the open of the market day (depending on your asset timing will vary).
*This script was designed for Intraday Trading, Long term or Swing Trading is not recommended with this system
The script will create buy and sell signals on the break of the Impact Zones when specific criteria is met along with the break of the zone. You do not have to use only our signals provided, you can also create your own trading rules based on our script.
Items to highlight:
Skylyne Upper Zone: Green Zone
Skylyne Middle: Yellow Line
Skylyne Lower Zone: Red Zone
Skylyne Take Profit Lines: Purple Lines
Skylyne Average: Orange Line (dynamic support/resistance)
Skylyne Overnight Session: Dark Blue (No Trade Zones)
Skylyne Signals: Buy / Sell
You can think of the Upper Zone as a bull zone and Lower zone as a bear zone, when price enters these zones we want to start watching price action to determine direction the market will take on the break or specified zone, whether it be a break and reversal or a break and run. This can be confirmed with either our signals (buy & sell) or the use of the dynamic support and resistance line (Skylyne Average).
Our script is written to capture market zones and place then on your screen with ease, we also have programmed in specific take profits and stop loss levels we have found the market respects on the intraday trading based on the Impact Zone captured.
The Impact Zones and Take Profit Levels change at Market open everyday. The levels provided will stay on your chart until the next Market open where the Impact Zones and Levels will change to accommodate that trading Day.
We recommend only using that trading days levels, however; using past levels can help trades depending on the case
The three Trades we want to highlight are:
1. Break of Impact Zones
a. This trade is taken when a break of the impact zone happens either in the positive or negative direction and traded to the next zone or take profit line (stop losses can be set with zones or the dynamic skylyne average crossovers)
2. Break of Skylyne Average
a. This trade is taken when price action confirms a bullish or bearish bias on the break of the average line (we would close this trade on the reverse break of the Skylyne Average using the zones as targets)
3. Break of the Skylyne Mid:
a. This trade is taken when a break of the Skylyne Mid level occurs and we use the upper and lower bounds of the Impact Zones as take profit and stop losses
Impact Zone Settings:
*Trading Category and Overnight Category must match the Asset Class being viewed on chart for accurate signals
1. Trading Category
a. Bonds
b. Corn/Wheat
c. Stocks
d. Index Futures
e. Euro/Dollar
f. Gold/Silver
2. Overnight Category
a. Bonds
b. Corn/Wheat
c. Stocks
d. Index Futures
e. Euro/Dollar
f. Gold/Silver
3. Chart Aggregation Limit (Default Value is 25 minutes)
Impact Zone Overnight Trading:
Impact Zone Overnight sessions are highlighted in a dark blue color and we use these highlighted time sessions as a NO TRADE session. Our system was built to be traded during normal market trading hours and overnight sessions tend to be less predictive in terms of direction and or zone reliance. If you choose to trade overnight sessions with Impact Zones, make sure you make a very in depth trading plan and stick to the rules set for yourself.
Impact Zone Signals:
1. Signals for buy or sell of the asset class happen on breaks of the Impact Zones, and when specific criteria are met that we determined necessary to evaluate the overall trend of the market
2. Not every break of the Impact Zones will trigger a signal
3. No signal will be generated during overnight sessions, we recommend studying overnight sessions before beginning to create your own overnight trading session plans based on Impact Zones
4. When a signal is generated you will use the next take profit line (purple line) in the direction of your trade you are in. Other trading signals were discussed above
5. If while you are in a trade and the skylyne average (orange line) is broke in the opposite direction of your trade you will take this as a dynamic stop, and in some cases a dynamic take profit
Impact Zone Charting Timeframes:
1. Recommendation of using the 1 minute chart aggregation bars to maximize profits and limit losses
2. The script has a default charting aggregation limit of 25 minutes, adjustments to the input (in the settings) to increase the aggregation limit need to be made in order to use higher than 25 minute timeframes
Charting Example:
First note is to notice how our publish example uses the 1-minute timeframe aggregation, this is because our script was written to maximize profit on the 1 minute time frame. The script can be used on any time frame, however; make sure that you increase the aggregation limit input when using timeframes above 25 minutes.
From the chart included in the script post, you can notice that buy and sell signals happen only when specified criteria is met, and not every time there is a crossover of the Impact Zones there is a signal. You do not only have to trade the buy and sell signals that our system provides, however; our team believes that these signals are one of the best ways to trade the Impact Zone script. If you deviate from only using signals provided and choose to use the Impact Zones differently, we recommend using the next level, or zone, in the direction of your trade as your take profit (As described in trade we want to highlight section)
MTF Oscillator Framework [PineCoders]This framework allows Pine coders to quickly build a complete multi-timeframe oscillator from any calculation producing values around a centerline, whether the values are bounded or not. Insert your calculation in the script and you have a ready-to-publish MTF Oscillator offering a plethora of presentation options and features.
█ HOW TO USE THE FRAMEWORK
1 — Insert your calculation in the `f_signal()` function at the top of the "Helper Functions" section of the script.
2 — Change the script's name in the `study()` declaration statement and the `alertcondition()` text in the last part of the "Plots" section.
3 — Adapt the default value used to initialize the CENTERLINE constant in the script's "Constants" section.
4 — If you want to publish the script, copy/paste the following description in your new publication's description and replace the "OVERVIEW" section with a description of your calculations.
5 — Voilà!
═════════════════════════════════════════════════════════════════════════
█ OVERVIEW
This oscillator calculates a directional value of True Range. When a bar is up, the positive value of True Range is used. A negative value is used when the bar is down. When there is no movement during the bar, a zero value is generated, even if True Range is different than zero. Because the unit of measure of True Range is price, the oscillator is unbounded (it does not have fixed upper/lower bounds).
True Range can be used as a metric for volatility, but by using a signed value, this oscillator will show the directional bias of progressively increasing/decreasing volatility, which can make it more useful than an always positive value of True Range.
The True Range calculation appeared for the first time in J. Welles Wilder's New Concepts in Technical Trading Systems book published in 1978. Wilder's objective was to provide a reliable measure of the effective movement—or range—between two bars, to measure volatility. True Range is also the building block used to calculate ATR (Average True Range), which calculates the average of True Range values over a given period using the `rma` averaging method—the same used in the calculation of another of Wilder's remarkable creations: RSI.
█ CONCEPTS
This oscillator's design stems from a few key concepts.
Relative Levels
Other than the centerline, relative rather than absolute levels are used to identify levels of interest. Accordingly, no fixed levels correspond to overbought/oversold conditions. Relative levels of interest are identified using:
• A Donchian channel (historical highs/lows).
• The oscillator's position relative to higher timeframe values.
• Oscillator levels following points in time where a divergence is identified.
Higher timeframes
Two progressively higher timeframes are used to calculate larger-context values for the oscillator. The rationale underlying the use of timeframes higher than the chart's is that, while they change less frequently than the values calculated at the chart's resolution, they are more meaningful because more work (trader activity) is required to calculate them. Combining the immediacy of values calculated at the chart's resolution to higher timeframe values achieves a compromise between responsiveness and reliability.
Divergences as points of interest rather than directional clues
A very simple interpretation of what constitutes a divergence is used. A divergence is defined as a discrepancy between any bar's direction and the direction of the signal line on that same bar. No attempt is made to attribute a directional bias to divergences when they occur. Instead, the oscillator's level is saved and subsequent movement of the oscillator relative to the saved level is what determines the bullish/bearish state of the oscillator.
Conservative coloring scheme
Several additive coloring conditions allow the bull/bear coloring of the oscillator's main line to be restricted to specific areas meeting all the selected conditions. The concept is built on the premise that most of the time, an oscillator's value should be viewed as mere noise, and that somewhat like price, it only occasionally conveys actionable information.
█ FEATURES
Plots
• Three lines can be plotted. They are named Main line , Line 2 and Line 3 . You decide which calculation to use for each line:
• The oscillator's value at the chart's resolution.
• The oscillator's value at a medium timeframe higher than the chart's resolution.
• The oscillator's value at the highest timeframe.
• An aggregate line calculated using a weighed average of the three previous lines (see the Aggregate Weights section of Inputs to configure the weights).
• The coloring conditions, divergence levels and the Hi/Lo channel always apply to the Main line, whichever calculation you decide to use for it.
• The color of lines 2 and 3 are fixed but can be set in the "Colors" section of Inputs.
• You can change the thickness of each line.
• When the aggregate line is displayed, higher timeframe values are only used in its calculation when they become available in the chart's history,
otherwise the aggregate line would appear much later on the chart. To indicate when each higher timeframe value becomes available,
a small label appears near the centerline.
• Divergences can be shown as small dots on the centerline.
• Divergence levels can be shown. The level and fill are determined by the oscillator's position relative to the last saved divergence level.
• Bull/bear markers can be displayed. They occur whenever a new bull/bear state is determined by the "Main Line Coloring Conditions".
• The Hi/Lo (Donchian) channel can be displayed, and its period defined.
• The background can display the state of any one of 11 different conditions.
• The resolutions used for the higher timeframes can be displayed to the right of the last bar's value.
• Four key values are always displayed in the Data Window (fourth icon down to the right of your chart):
oscillator values for the chart, medium and highest timeframes, and the oscillator's instant value before it is averaged.
Main Line Coloring Conditions
• Nine different conditions can be selected to determine the bull/bear coloring of the main line. All conditions set to "ON" must be met to determine the bull/bear state.
• A volatility state can also be used to filter the conditions.
• When the coloring conditions and the filter do not allow for a bull/bear state to be determined, the neutral color is used.
Signal
• Seven different averages can be used to calculate the average of the oscillator's value.
• The average's period can be set. A period of one will show the instant value of the oscillator,
provided you don't use linear regression or the Hull MA as they do not work with a period of one.
• An external signal can be used as the oscillator's instant value. If an already averaged external value is used, set the period to one in this indicator.
• For the cases where an external signal is used, a centerline value can be set.
Higher Timeframes
• The two higher timeframes are named Medium timeframe and Highest timeframe . They can be determined using one of three methods:
• Auto-steps: the higher timeframes are determined using the chart's resolution. If the chart uses a seconds resolution, for example,
the medium and highest resolutions will be 15 and 60 minutes.
• Multiples: the timeframes are calculated using a multiple of the chart's resolution, which you can set.
• Fixed: the set timeframes do not change with the chart's resolution.
Repainting
• Repainting can be controlled separately for the chart's value and the higher timeframe values.
• The default is a repainting chart value and non-repainting higher timeframe values. The Aggregate line will thus repaint by default,
as it uses the chart's value along with the higher timeframes values.
Aggregate Weights
• The weight of each component of the Aggregate line can be set.
• The default is equal weights for the three components, meaning that the chart's value accounts for one third of the weight in the Aggregate.
High Volatility
• This provides control over the volatility filter used in the Main line's coloring conditions and the background display.
• Volatility is determined to be high when the short-term ATR is greater than the long-term ATR.
Colors
• You can define your own colors for all of the oscillator's plots.
• The default colors will perform well on both white and black chart backgrounds.
Alerts
• An alert can be defined for the script. The alert will trigger whenever a bull/bear marker appears in the indicator's display.
The particular combination of coloring conditions and the display of bull/bear markers when you create the alert will thus determine when the alert triggers.
Once the alerts are created, subsequent changes to the conditions controlling the display of markers will not affect the existing alert(s).
• You can create multiple alerts from this script, each triggering on different conditions.
Backtesting & Trading Engine Signal Line
• An invisible plot named "BTE Signal" is provided. It can be used as an entry signal when connected to the PineCoders Backtesting & Trading Engine as an external input.
It will generate an entry whenever a marker is displayed.
Look first. Then leap.
Support Resistance - DynamicThis is Dynamic Support / Resistance script.
How it Works?
It finds Pivot Points and creates channels for each Pivot Point. Channel size is calculated by (Highest - Lowest) * %Channel_size in Loopback Period. After creating channels it calculates that how many Pivot Points in the channels. more Pivot Points in channel means stronger Support/Resistance. in the option menu there is S/R Strength, this is the minimum number of Pivot Points that each channel must contain to be S/R. calculation starts from last pivot point and go back for "loopback period" which is 300 by default. so last Pivot Points have more priority. Finally after calculating Support/Resistance it draws lines.
Number of Support/Resistance line is Dynamic and up to 20 lines, that means number of lines changes dynamically. you can see how the script puts Suppport/Resistance lines dynamically by "Replay" button. (if I have time I will try to put a video)
Currently the scripts checks up to 40 pivot points in loopback period. it shows up to 20 S/Rs only for visible area in the chart.
There is option to Show S/R lines as Solid, Dotted or Dashed.
Enjoy!
Plotchar - How to draw external symbols on a chartHey everyone
It's been a while :) but still on holidays and working on the website. I'll resume the scripts sharing shortly once I'll get back home
For today, I wanted to share a very useful script that is going to make you a top of money 100% guaranteed and you'll even have a Lamborghini delivered at your place by tomorrow... (imagine some followers would believe me for this)
This "script" is a proof of concept that you can draw external Unicode symbols on a chart.
If you're tired with the plotshape shapes by default, you can use some others - I usually find mine there emojipedia.org
What are the use cases?
- Draw a dead skeleton when your stop-loss is hit
- Draw a winning cup when your take profit is hit
- Draw a coffin when you run out of capital
FAQ
Q: Does this script has any interest?
A: I'm not sure myself
Q: Will you make money using it?
A: I'm not a financial advisor but ... very likely NO
Q: Is it cool though?
A: Hell yeah!!
Be sure to hit the thumbs up so that I'll share real scripts the next times and not "joke scripts". I promise it's the first and last time I'm sharing such a script
Dave
____________________________________________________________
- I'm an officially approved PineEditor/LUA/MT4 approved mentor on codementor. You can request a coaching with me if you want and I'll teach you how to build kick-ass indicators and strategies
Jump on a 1 to 1 coaching with me
- You can also hire for a custom dev of your indicator/strategy/bot/chrome extension/python
How to avoid repainting when using security() - PineCoders FAQNOTE
The non-repainting technique in this publication that relies on bar states is now deprecated, as we have identified inconsistencies that undermine its credibility as a universal solution. The outputs that use the technique are still available for reference in this publication. However, we do not endorse its usage. See this publication for more information about the current best practices for requesting HTF data and why they work.
This indicator shows how to avoid repainting when using the security() function to retrieve information from higher timeframes.
What do we mean by repainting?
Repainting is used to describe three different things, in what we’ve seen in TV members comments on indicators:
1. An indicator showing results that change during the realtime bar, whether the script is using the security() function or not, e.g., a Buy signal that goes on and then off, or a plot that changes values.
2. An indicator that uses future data not yet available on historical bars.
3. An indicator that uses a negative offset= parameter when plotting in order to plot information on past bars.
The repainting types we will be discussing here are the first two types, as the third one is intentional—sometimes even intentionally misleading when unscrupulous script writers want their strategy to look better than it is.
Let’s be clear about one thing: repainting is not caused by a bug ; it is caused by the different context between historical bars and the realtime bar, and script coders or users not taking the necessary precautions to prevent it.
Why should repainting be avoided?
Repainting matters because it affects the behavior of Pine scripts in the realtime bar, where the action happens and counts, because that is when traders (or our systems) take decisions where odds must be in our favor.
Repainting also matters because if you test a strategy on historical bars using only OHLC values, and then run that same code on the realtime bar with more than OHLC information, scripts not properly written or misconfigured alerts will alter the strategy’s behavior. At that point, you will not be running the same strategy you tested, and this invalidates your test results , which were run while not having the additional price information that is available in the realtime bar.
The realtime bar on your charts is only one bar, but it is a very important bar. Coding proper strategies and indicators on TV requires that you understand the variations in script behavior and how information available to the script varies between when the script is running on historical and realtime bars.
How does repainting occur?
Repainting happens because of something all traders instinctively crave: more information. Contrary to trader lure, more information is not always better. In the realtime bar, all TV indicators (a.k.a. studies ) execute every time price changes (i.e. every tick ). TV strategies will also behave the same way if they use the calc_on_every_tick = true parameter in their strategy() declaration statement (the parameter’s default value is false ). Pine coders must decide if they want their code to use the realtime price information as it comes in, or wait for the realtime bar to close before using the same OHLC values for that bar that would be used on historical bars.
Strategy modelers often assume that using realtime price information as it comes in the realtime bar will always improve their results. This is incorrect. More information does not necessarily improve performance because it almost always entails more noise. The extra information may or may not improve results; one cannot know until the code is run in realtime for enough time to provide data that can be analyzed and from which somewhat reliable conclusions can be derived. In any case, as was stated before, it is critical to understand that if your strategy is taking decisions on realtime tick data, you are NOT running the same strategy you tested on historical bars with OHLC values only.
How do we avoid repainting?
It comes down to using reliable information and properly configuring alerts, if you use them. Here are the main considerations:
1. If your code is using security() calls, use the syntax we propose to obtain reliable data from higher timeframes.
2. If your script is a strategy, do not use the calc_on_every_tick = true parameter unless your strategy uses previous bar information to calculate.
3. If your script is a study and is using current timeframe information that is compared to values obtained from a higher timeframe, even if you can rely on reliable higher timeframe information because you are correctly using the security() function, you still need to ensure the realtime bar’s information you use (a cross of current close over a higher timeframe MA, for example) is consistent with your backtest methodology, i.e. that your script calculates on the close of the realtime bar. If your system is using alerts, the simplest solution is to configure alerts to trigger Once Per Bar Close . If you are not using alerts, the best solution is to use information from the preceding bar. When using previous bar information, alerts can be configured to trigger Once Per Bar safely.
What does this indicator do?
It shows results for 9 different ways of using the security() function and illustrates the simplest and most effective way to avoid repainting, i.e. using security() as in the example above. To show the indicator’s lines the most clearly, price on the chart is shown with a black line rather than candlesticks. This indicator also shows how misusing security() produces repainting. All combinations of using a 0 or 1 offset to reference the series used in the security() , as well as all combinations of values for the gaps= and lookahead= parameters are shown.
The close in the call labeled “BEST” means that once security has reached the upper timeframe (1 day in our case), it will fetch the previous day’s value.
The gaps= parameter is not specified as it is off by default and that is what we need. This ensures that the value returned by security() will not contain na values on any of our chart’s bars.
The lookahead security() to use the last available value for the higher timeframe bar we are using (the previous day, in our case). This ensures that security() will return the value at the end of the higher timeframe, even if it has not occurred yet. In our case, this has no negative impact since we are requesting the previous day’s value, with has already closed.
The indicator’s Settings/Inputs allow you to set:
- The higher timeframe security() calls will use
- The source security() calls will use
- If you want identifying labels printed on the lines that have no gaps (the lines containing gaps are plotted using very thick lines that appear as horizontal blocks of one bar in length)
For the lines to be plotted, you need to be on a smaller timeframe than the one used for the security() calls.
Comments in the code explain what’s going on.
Look first. Then leap.
THE PHOENIX v0.2 wSMDThis is my first publication, since sept 2018 i tested/converted to strategy over 500 scripts, this is by far my most profitable script.
Implementation in TradingView of modified version of the "Weis Wave".
indicatior will generate Long and Close Long signals according to market trend.
(Learned the hard way that using short instead of close long to close long orders will seriously mess backtest results and create unrealistic expectations)
Added a customizable RATE OF CHANGE indicator that I called SMD (sideways market detection) to try and avoid trading on sideways market.
References: "Trades About To Happen" David H. Weis, Division 2 of the Richard D. Wyckoff Method of Trading in Stocks.
I've had best results on 2h and 4h charts, I would not recommend to go below 1h, my general rule is to run the backtest on regular candle and make sure the backtest gives goodd result, but I use the script with autoview on heikin ashi.
Backtesting: You can change the dates of the backtest as you please, the backtest runs with 1000USD and 100% of equity orders, 3 ticks slippage and 0.1% commission.
For Autoview users: Will upload LONG ALERT and CLOSE LONG ALERT studies separately as I find it easier to see whats going on on 2 seperate indicators.
NO, IT DOES NOT REPAINT.
Color█ OVERVIEW
This library is a Pine Script® programming tool for advanced color processing. It provides a comprehensive set of functions for specifying and analyzing colors in various color spaces, mixing and manipulating colors, calculating custom gradients and schemes, detecting contrast, and converting colors to or from hexadecimal strings.
█ CONCEPTS
Color
Color refers to how we interpret light of different wavelengths in the visible spectrum . The colors we see from an object represent the light wavelengths that it reflects, emits, or transmits toward our eyes. Some colors, such as blue and red, correspond directly to parts of the spectrum. Others, such as magenta, arise from a combination of wavelengths to which our minds assign a single color.
The human interpretation of color lends itself to many uses in our world. In the context of financial data analysis, the effective use of color helps transform raw data into insights that users can understand at a glance. For example, colors can categorize series, signal market conditions and sessions, and emphasize patterns or relationships in data.
Color models and spaces
A color model is a general mathematical framework that describes colors using sets of numbers. A color space is an implementation of a specific color model that defines an exact range (gamut) of reproducible colors based on a set of primary colors , a reference white point , and sometimes additional parameters such as viewing conditions.
There are numerous different color spaces — each describing the characteristics of color in unique ways. Different spaces carry different advantages, depending on the application. Below, we provide a brief overview of the concepts underlying the color spaces supported by this library.
RGB
RGB is one of the most well-known color models. It represents color as an additive mixture of three primary colors — red, green, and blue lights — with various intensities. Each cone cell in the human eye responds more strongly to one of the three primaries, and the average person interprets the combination of these lights as a distinct color (e.g., pure red + pure green = yellow).
The sRGB color space is the most common RGB implementation. Developed by HP and Microsoft in the 1990s, sRGB provided a standardized baseline for representing color across CRT monitors of the era, which produced brightness levels that did not increase linearly with the input signal. To match displays and optimize brightness encoding for human sensitivity, sRGB applied a nonlinear transformation to linear RGB signals, often referred to as gamma correction . The result produced more visually pleasing outputs while maintaining a simple encoding. As such, sRGB quickly became a standard for digital color representation across devices and the web. To this day, it remains the default color space for most web-based content.
TradingView charts and Pine Script `color.*` built-ins process color data in sRGB. The red, green, and blue channels range from 0 to 255, where 0 represents no intensity, and 255 represents maximum intensity. Each combination of red, green, and blue values represents a distinct color, resulting in a total of 16,777,216 displayable colors.
CIE XYZ and xyY
The XYZ color space, developed by the International Commission on Illumination (CIE) in 1931, aims to describe all color sensations that a typical human can perceive. It is a cornerstone of color science, forming the basis for many color spaces used today. XYZ, and the derived xyY space, provide a universal representation of color that is not tethered to a particular display. Many widely used color spaces, including sRGB, are defined relative to XYZ or derived from it.
The CIE built the color space based on a series of experiments in which people matched colors they perceived from mixtures of lights. From these experiments, the CIE developed color-matching functions to calculate three components — X, Y, and Z — which together aim to describe a standard observer's response to visible light. X represents a weighted response to light across the color spectrum, with the highest contribution from long wavelengths (e.g., red). Y represents a weighted response to medium wavelengths (e.g., green), and it corresponds to a color's relative luminance (i.e., brightness). Z represents a weighted response to short wavelengths (e.g., blue).
From the XYZ space, the CIE developed the xyY chromaticity space, which separates a color's chromaticity (hue and colorfulness) from luminance. The CIE used this space to define the CIE 1931 chromaticity diagram , which represents the full range of visible colors at a given luminance. In color science and lighting design, xyY is a common means for specifying colors and visualizing the supported ranges of other color spaces.
CIELAB and Oklab
The CIELAB (L*a*b*) color space, derived from XYZ by the CIE in 1976, expresses colors based on opponent process theory. The L* component represents perceived lightness, and the a* and b* components represent the balance between opposing unique colors. The a* value specifies the balance between green and red , and the b* value specifies the balance between blue and yellow .
The primary intention of CIELAB was to provide a perceptually uniform color space, where fixed-size steps through the space correspond to uniform perceived changes in color. Although relatively uniform, the color space has been found to exhibit some non-uniformities, particularly in the blue part of the color spectrum. Regardless, modern applications often use CIELAB to estimate perceived color differences and calculate smooth color gradients.
In 2020, a new LAB-oriented color space, Oklab , was introduced by Björn Ottosson as an attempt to rectify the non-uniformities of other perceptual color spaces. Similar to CIELAB, the L value in Oklab represents perceived lightness, and the a and b values represent the balance between opposing unique colors. Oklab has gained widespread adoption as a perceptual space for color processing, with support in the latest CSS Color specifications and many software applications.
Cylindrical models
A cylindrical-coordinate model transforms an underlying color model, such as RGB or LAB, into an alternative expression of color information that is often more intuitive for the average person to use and understand.
Instead of a mixture of primary colors or opponent pairs, these models represent color as a hue angle on a color wheel , with additional parameters that describe other qualities such as lightness and colorfulness (a general term for concepts like chroma and saturation). In cylindrical-coordinate spaces, users can select a color and modify its lightness or other qualities without altering the hue.
The three most common RGB-based models are HSL (Hue, Saturation, Lightness), HSV (Hue, Saturation, Value), and HWB (Hue, Whiteness, Blackness). All three define hue angles in the same way, but they define colorfulness and lightness differently. Although they are not perceptually uniform, HSL and HSV are commonplace in color pickers and gradients.
For CIELAB and Oklab, the cylindrical-coordinate versions are CIELCh and Oklch , which express color in terms of perceived lightness, chroma, and hue. They offer perceptually uniform alternatives to RGB-based models. These spaces create unique color wheels, and they have more strict definitions of lightness and colorfulness. Oklch is particularly well-suited for generating smooth, perceptual color gradients.
Alpha and transparency
Many color encoding schemes include an alpha channel, representing opacity . Alpha does not help define a color in a color space; it determines how a color interacts with other colors in the display. Opaque colors appear with full intensity on the screen, whereas translucent (semi-opaque) colors blend into the background. Colors with zero opacity are invisible.
In Pine Script, there are two ways to specify a color's alpha:
• Using the `transp` parameter of the built-in `color.*()` functions. The specified value represents transparency (the opposite of opacity), which the functions translate into an alpha value.
• Using eight-digit hexadecimal color codes. The last two digits in the code represent alpha directly.
A process called alpha compositing simulates translucent colors in a display. It creates a single displayed color by mixing the RGB channels of two colors (foreground and background) based on alpha values, giving the illusion of a semi-opaque color placed over another color. For example, a red color with 80% transparency on a black background produces a dark shade of red.
Hexadecimal color codes
A hexadecimal color code (hex code) is a compact representation of an RGB color. It encodes a color's red, green, and blue values into a sequence of hexadecimal ( base-16 ) digits. The digits are numerals ranging from `0` to `9` or letters from `a` (for 10) to `f` (for 15). Each set of two digits represents an RGB channel ranging from `00` (for 0) to `ff` (for 255).
Pine scripts can natively define colors using hex codes in the format `#rrggbbaa`. The first set of two digits represents red, the second represents green, and the third represents blue. The fourth set represents alpha . If unspecified, the value is `ff` (fully opaque). For example, `#ff8b00` and `#ff8b00ff` represent an opaque orange color. The code `#ff8b0033` represents the same color with 80% transparency.
Gradients
A color gradient maps colors to numbers over a given range. Most color gradients represent a continuous path in a specific color space, where each number corresponds to a mix between a starting color and a stopping color. In Pine, coders often use gradients to visualize value intensities in plots and heatmaps, or to add visual depth to fills.
The behavior of a color gradient depends on the mixing method and the chosen color space. Gradients in sRGB usually mix along a straight line between the red, green, and blue coordinates of two colors. In cylindrical spaces such as HSL, a gradient often rotates the hue angle through the color wheel, resulting in more pronounced color transitions.
Color schemes
A color scheme refers to a set of colors for use in aesthetic or functional design. A color scheme usually consists of just a few distinct colors. However, depending on the purpose, a scheme can include many colors.
A user might choose palettes for a color scheme arbitrarily, or generate them algorithmically. There are many techniques for calculating color schemes. A few simple, practical methods are:
• Sampling a set of distinct colors from a color gradient.
• Generating monochromatic variants of a color (i.e., tints, tones, or shades with matching hues).
• Computing color harmonies — such as complements, analogous colors, triads, and tetrads — from a base color.
This library includes functions for all three of these techniques. See below for details.
█ CALCULATIONS AND USE
Hex string conversion
The `getHexString()` function returns a string containing the eight-digit hexadecimal code corresponding to a "color" value or set of sRGB and transparency values. For example, `getHexString(255, 0, 0)` returns the string `"#ff0000ff"`, and `getHexString(color.new(color.red, 80))` returns `"#f2364533"`.
The `hexStringToColor()` function returns the "color" value represented by a string containing a six- or eight-digit hex code. The `hexStringToRGB()` function returns a tuple containing the sRGB and transparency values. For example, `hexStringToColor("#f23645")` returns the same value as color.red .
Programmers can use these functions to parse colors from "string" inputs, perform string-based color calculations, and inspect color data in text outputs such as Pine Logs and tables.
Color space conversion
All other `get*()` functions convert a "color" value or set of sRGB channels into coordinates in a specific color space, with transparency information included. For example, the tuple returned by `getHSL()` includes the color's hue, saturation, lightness, and transparency values.
To convert data from a color space back to colors or sRGB and transparency values, use the corresponding `*toColor()` or `*toRGB()` functions for that space (e.g., `hslToColor()` and `hslToRGB()`).
Programmers can use these conversion functions to process inputs that define colors in different ways, perform advanced color manipulation, design custom gradients, and more.
The color spaces this library supports are:
• sRGB
• Linear RGB (RGB without gamma correction)
• HSL, HSV, and HWB
• CIE XYZ and xyY
• CIELAB and CIELCh
• Oklab and Oklch
Contrast-based calculations
Contrast refers to the difference in luminance or color that makes one color visible against another. This library features two functions for calculating luminance-based contrast and detecting themes.
The `contrastRatio()` function calculates the contrast between two "color" values based on their relative luminance (the Y value from CIE XYZ) using the formula from version 2 of the Web Content Accessibility Guidelines (WCAG) . This function is useful for identifying colors that provide a sufficient brightness difference for legibility.
The `isLightTheme()` function determines whether a specified background color represents a light theme based on its contrast with black and white. Programmers can use this function to define conditional logic that responds differently to light and dark themes.
Color manipulation and harmonies
The `negative()` function calculates the negative (i.e., inverse) of a color by reversing the color's coordinates in either the sRGB or linear RGB color space. This function is useful for calculating high-contrast colors.
The `grayscale()` function calculates a grayscale form of a specified color with the same relative luminance.
The functions `complement()`, `splitComplements()`, `analogousColors()`, `triadicColors()`, `tetradicColors()`, `pentadicColors()`, and `hexadicColors()` calculate color harmonies from a specified source color within a given color space (HSL, CIELCh, or Oklch). The returned harmonious colors represent specific hue rotations around a color wheel formed by the chosen space, with the same defined lightness, saturation or chroma, and transparency.
Color mixing and gradient creation
The `add()` function simulates combining lights of two different colors by additively mixing their linear red, green, and blue components, ignoring transparency by default. Users can calculate a transparency-weighted mixture by setting the `transpWeight` argument to `true`.
The `overlay()` function estimates the color displayed on a TradingView chart when a specific foreground color is over a background color. This function aids in simulating stacked colors and analyzing the effects of transparency.
The `fromGradient()` and `fromMultiStepGradient()` functions calculate colors from gradients in any of the supported color spaces, providing flexible alternatives to the RGB-based color.from_gradient() function. The `fromGradient()` function calculates a color from a single gradient. The `fromMultiStepGradient()` function calculates a color from a piecewise gradient with multiple defined steps. Gradients are useful for heatmaps and for coloring plots or drawings based on value intensities.
Scheme creation
Three functions in this library calculate palettes for custom color schemes. Scripts can use these functions to create responsive color schemes that adjust to calculated values and user inputs.
The `gradientPalette()` function creates an array of colors by sampling a specified number of colors along a gradient from a base color to a target color, in fixed-size steps.
The `monoPalette()` function creates an array containing monochromatic variants (tints, tones, or shades) of a specified base color. Whether the function mixes the color toward white (for tints), a form of gray (for tones), or black (for shades) depends on the `grayLuminance` value. If unspecified, the function automatically chooses the mix behavior with the highest contrast.
The `harmonyPalette()` function creates a matrix of colors. The first column contains the base color and specified harmonies, e.g., triadic colors. The columns that follow contain tints, tones, or shades of the harmonic colors for additional color choices, similar to `monoPalette()`.
█ EXAMPLE CODE
The example code at the end of the script generates and visualizes color schemes by processing user inputs. The code builds the scheme's palette based on the "Base color" input and the additional inputs in the "Settings/Inputs" tab:
• "Palette type" specifies whether the palette uses a custom gradient, monochromatic base color variants, or color harmonies with monochromatic variants.
• "Target color" sets the top color for the "Gradient" palette type.
• The "Gray luminance" inputs determine variation behavior for "Monochromatic" and "Harmony" palette types. If "Auto" is selected, the palette mixes the base color toward white or black based on its brightness. Otherwise, it mixes the color toward the grayscale color with the specified relative luminance (from 0 to 1).
• "Harmony type" specifies the color harmony used in the palette. Each row in the palette corresponds to one of the harmonious colors, starting with the base color.
The code creates a table on the first bar to display the collection of calculated colors. Each cell in the table shows the color's `getHexString()` value in a tooltip for simple inspection.
Look first. Then leap.
█ EXPORTED FUNCTIONS
Below is a complete list of the functions and overloads exported by this library.
getRGB(source)
Retrieves the sRGB red, green, blue, and transparency components of a "color" value.
getHexString(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channel values to a string representing the corresponding color's hexadecimal form.
getHexString(source)
(Overload 2 of 2) Converts a "color" value to a string representing the sRGB color's hexadecimal form.
hexStringToRGB(source)
Converts a string representing an sRGB color's hexadecimal form to a set of decimal channel values.
hexStringToColor(source)
Converts a string representing an sRGB color's hexadecimal form to a "color" value.
getLRGB(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channel values to a set of linear RGB values with specified transparency information.
getLRGB(source)
(Overload 2 of 2) Retrieves linear RGB channel values and transparency information from a "color" value.
lrgbToRGB(lr, lg, lb, t)
Converts a set of linear RGB channel values to a set of sRGB values with specified transparency information.
lrgbToColor(lr, lg, lb, t)
Converts a set of linear RGB channel values and transparency information to a "color" value.
getHSL(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of HSL values with specified transparency information.
getHSL(source)
(Overload 2 of 2) Retrieves HSL channel values and transparency information from a "color" value.
hslToRGB(h, s, l, t)
Converts a set of HSL channel values to a set of sRGB values with specified transparency information.
hslToColor(h, s, l, t)
Converts a set of HSL channel values and transparency information to a "color" value.
getHSV(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of HSV values with specified transparency information.
getHSV(source)
(Overload 2 of 2) Retrieves HSV channel values and transparency information from a "color" value.
hsvToRGB(h, s, v, t)
Converts a set of HSV channel values to a set of sRGB values with specified transparency information.
hsvToColor(h, s, v, t)
Converts a set of HSV channel values and transparency information to a "color" value.
getHWB(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of HWB values with specified transparency information.
getHWB(source)
(Overload 2 of 2) Retrieves HWB channel values and transparency information from a "color" value.
hwbToRGB(h, w, b, t)
Converts a set of HWB channel values to a set of sRGB values with specified transparency information.
hwbToColor(h, w, b, t)
Converts a set of HWB channel values and transparency information to a "color" value.
getXYZ(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of XYZ values with specified transparency information.
getXYZ(source)
(Overload 2 of 2) Retrieves XYZ channel values and transparency information from a "color" value.
xyzToRGB(x, y, z, t)
Converts a set of XYZ channel values to a set of sRGB values with specified transparency information
xyzToColor(x, y, z, t)
Converts a set of XYZ channel values and transparency information to a "color" value.
getXYY(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of xyY values with specified transparency information.
getXYY(source)
(Overload 2 of 2) Retrieves xyY channel values and transparency information from a "color" value.
xyyToRGB(xc, yc, y, t)
Converts a set of xyY channel values to a set of sRGB values with specified transparency information.
xyyToColor(xc, yc, y, t)
Converts a set of xyY channel values and transparency information to a "color" value.
getLAB(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of CIELAB values with specified transparency information.
getLAB(source)
(Overload 2 of 2) Retrieves CIELAB channel values and transparency information from a "color" value.
labToRGB(l, a, b, t)
Converts a set of CIELAB channel values to a set of sRGB values with specified transparency information.
labToColor(l, a, b, t)
Converts a set of CIELAB channel values and transparency information to a "color" value.
getOKLAB(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of Oklab values with specified transparency information.
getOKLAB(source)
(Overload 2 of 2) Retrieves Oklab channel values and transparency information from a "color" value.
oklabToRGB(l, a, b, t)
Converts a set of Oklab channel values to a set of sRGB values with specified transparency information.
oklabToColor(l, a, b, t)
Converts a set of Oklab channel values and transparency information to a "color" value.
getLCH(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of CIELCh values with specified transparency information.
getLCH(source)
(Overload 2 of 2) Retrieves CIELCh channel values and transparency information from a "color" value.
lchToRGB(l, c, h, t)
Converts a set of CIELCh channel values to a set of sRGB values with specified transparency information.
lchToColor(l, c, h, t)
Converts a set of CIELCh channel values and transparency information to a "color" value.
getOKLCH(r, g, b, t)
(Overload 1 of 2) Converts a set of sRGB channels to a set of Oklch values with specified transparency information.
getOKLCH(source)
(Overload 2 of 2) Retrieves Oklch channel values and transparency information from a "color" value.
oklchToRGB(l, c, h, t)
Converts a set of Oklch channel values to a set of sRGB values with specified transparency information.
oklchToColor(l, c, h, t)
Converts a set of Oklch channel values and transparency information to a "color" value.
contrastRatio(value1, value2)
Calculates the contrast ratio between two colors values based on the formula from version 2 of the Web Content Accessibility Guidelines (WCAG).
isLightTheme(source)
Detects whether a background color represents a light theme or dark theme, based on the amount of contrast between the color and the white and black points.
grayscale(source)
Calculates the grayscale version of a color with the same relative luminance (i.e., brightness).
negative(source, colorSpace)
Calculates the negative (i.e., inverted) form of a specified color.
complement(source, colorSpace)
Calculates the complementary color for a `source` color using a cylindrical color space.
analogousColors(source, colorSpace)
Calculates the analogous colors for a `source` color using a cylindrical color space.
splitComplements(source, colorSpace)
Calculates the split-complementary colors for a `source` color using a cylindrical color space.
triadicColors(source, colorSpace)
Calculates the two triadic colors for a `source` color using a cylindrical color space.
tetradicColors(source, colorSpace, square)
Calculates the three square or rectangular tetradic colors for a `source` color using a cylindrical color space.
pentadicColors(source, colorSpace)
Calculates the four pentadic colors for a `source` color using a cylindrical color space.
hexadicColors(source, colorSpace)
Calculates the five hexadic colors for a `source` color using a cylindrical color space.
add(value1, value2, transpWeight)
Additively mixes two "color" values, with optional transparency weighting.
overlay(fg, bg)
Estimates the resulting color that appears on the chart when placing one color over another.
fromGradient(value, bottomValue, topValue, bottomColor, topColor, colorSpace)
Calculates the gradient color that corresponds to a specific value based on a defined value range and color space.
fromMultiStepGradient(value, steps, colors, colorSpace)
Calculates a multi-step gradient color that corresponds to a specific value based on an array of step points, an array of corresponding colors, and a color space.
gradientPalette(baseColor, stopColor, steps, strength, model)
Generates a palette from a gradient between two base colors.
monoPalette(baseColor, grayLuminance, variations, strength, colorSpace)
Generates a monochromatic palette from a specified base color.
harmonyPalette(baseColor, harmonyType, grayLuminance, variations, strength, colorSpace)
Generates a palette consisting of harmonious base colors and their monochromatic variants.
ZenAlgo - BenderThis script combines several volume-based methodologies into a single chart overlay to help traders analyze market participation and volume distribution. It aggregates volume from multiple sources—spot and perpetual markets across different exchanges—and processes it to display various insights directly on the chart.
The script provides a detailed view of both individual-bar volume and broader aggregated trends. It calculates certain values, plots different shapes and overlays, and includes an optional informational table. However, it does not offer financial signals or predict future price movements. Instead, it presents multiple volume and range-related highlights for educational or analytical observations.
Below is a detailed breakdown of the core elements in this script:
Core Data Calculation and Aggregation
To build a comprehensive volume picture, the script retrieves volume data from multiple predefined exchanges for both Spot and Perpetual pairs. The volume for each bar is processed in Aggregated mode , meaning it combines data across selected sources to produce a single composite volume value.
The script applies average-based aggregation to calculate the final volume figures. The total volume is then used as the basis for further calculations, such as buy/sell volume decomposition and Delta analysis.
Buy/Sell Volume Decomposition
Each bar’s total volume is separated into an estimated buy portion and a sell portion. This decomposition uses logic that considers wick length, body size, and whether the bar closed higher or lower than it opened. The script assigns fractions of the total volume to the upper wick, lower wick, and body, then multiplies these by the total aggregated volume to estimate buy and sell volumes.
This breakdown is calculated separately for spot-only volume , perp-only volume , and their aggregated sums, allowing traders to analyze how much of each bar’s volume is estimated as "buy" or "sell."
Delta and Cumulative Delta
The script computes a Delta (buy volume minus sell volume) for each bar. A positive Delta suggests more buying during that bar, while a negative Delta suggests more selling.
It also computes Cumulative Delta , summing this Delta over 14 bars (a fixed period). This allows users to observe how short-term buy/sell imbalances accumulate over time.
Visual Bar Coloring (PVSRA Logic)
The script includes logic based on PVSRA (Price Volume Support Resistance Analysis) , which examines average volume over a recent lookback period to determine whether a bar meets certain "climax" or "above-average" thresholds.
Bars are categorized as:
Climax Up or Climax Down: If a bar meets strong volume and range conditions, it is identified as a high-activity bar.
Neutral Colors: Bars that do not meet the threshold are identified as standard volume bars.
Table Summaries
The script includes an optional Spot vs. Perpetual volume table that provides:
Aggregated Spot vs. Perpetual buy/sell volumes
The net difference between buying and selling
The total sum across all included sources
Percentage breakdown of buying vs. selling
A separate multi-timeframe table calculates volume-related metrics for fixed timeframes (15, 60, and 240 minutes), allowing traders to compare their current timeframe with broader trends.
Highlighted Shapes and Diamonds
The script places shape markers above or below bars when certain conditions are met, including:
Dots (circles): Representing a significant increase in net Delta compared to the previous bar.
Diamonds: Markers that appear when volume-based conditions align with predefined thresholds. These vary in size and include an optional "Hardcore Mode" , which applies stricter filtering.
Crossover Triangles: These appear when the internally computed Delta MA (a moving average of Delta) crosses above or below a predefined EMA.
These markers highlight notable changes in volume, Delta, or price action but do not constitute predictive trading signals.
Delta Averages and Overlaid EMAs
The script plots a histogram of the current net Delta (buy minus sell) . Additionally, a Delta Moving Average (Delta MA) is used for tracking trends. The Delta MA is plotted alongside predefined Exponential Moving Averages (EMAs) , such as:
A Delta MA calculated using an exponential moving average (EMA) over 21 bars.
A set of predefined EMAs (lengths such as 3, 5, 7, 10, 13, 16, 21, 25, etc.) plotted to visualize momentum changes.
Areas between these EMAs can be filled with translucent shading to highlight momentum shifts.
Comparing the Delta MA to the overlaid EMAs helps track changes in Delta momentum over time.
Interpreting the Elements
When using this script, consider the following:
Volume Aggregation: The script aggregates volume across multiple Spot and Perpetual sources to provide a broad market view.
Delta and Cumulative Delta: The Delta histogram may spike positively or negatively, highlighting areas of potential buying or selling pressure.
Table Data: If enabled, the tables display buy/sell volume splits for Spot and Perpetual markets, along with multi-timeframe comparisons.
EMA Overlays on Delta: The stacked EMAs help visualize short-term vs. longer-term Delta changes.
Shape Markers: Dots, diamonds, and triangles emphasize notable shifts in volume or Delta but do not imply recommendations for action.
Usage Tips
Toggle "Hardcore Mode" to apply stricter filtering to highlight conditions.
Enable or disable the Spot vs. Perpetual Table to see if the breakdown of volume sources is useful.
Use the multi-timeframe table to compare intraday data with broader trends.
If the chart appears too cluttered, toggle off features like PVSRA color tints or some EMAs to focus on specific elements.
Final Thoughts
This script integrates multiple volume-based calculations, range analysis, aggregated volume from predefined tickers, and various moving averages for Delta. Its visual layers—color-coded bars, histograms, shape markers, and tables—offer a rich perspective on market activity.
Users can analyze these elements across any timeframe or market combination they prefer. The script does not provide buy/sell signals or make predictions —it is purely an analytical tool for understanding volume-based market dynamics.
Traders should interpret these visual elements according to their own strategy and trading approach.
Trend Vanguard StrategyHow to Use:
Trend Vanguard Strategy is a multi-feature Pine Script strategy designed to identify market pivots, draw dynamic support/resistance, and generate trade signals via ZigZag breakouts. Here’s how it works and how to use it:
ZigZag Detection & Pivot Points
The script locates significant swing highs and lows using configurable Depth, Deviation, and Backstep values.
It then connects these pivots with lines (ZigZag) to highlight directional changes and prints labels (“Buy,” “Sell,” etc.) at key turning points.
Support & Resistance Trendlines
Pivot highs and lows are used to draw dashed S/R lines in real-time.
When price crosses these lines, the script triggers a breakout signal (long or short).
EMA Overlays
Up to four EMAs (with customizable lengths and colors) can be overlaid on the chart for added trend confirmation.
Enable/disable each EMA independently via the settings.
Repaint Option
Turning on “Smooth Indicator Lines” (repaint) uses future data to refine past pivots.
This can make historical signals look cleaner but does not reflect true historical conditions.
Turning it off ensures signals remain fixed once they appear.
Strategy Entries & Exits
On each new ZigZag “Buy” or “Sell” signal, the script closes any open position and flips to the opposite side (if desired).
Works with the built-in TradingView Strategy engine for backtesting.
Additional Inputs (Placeholders)
Volume Filter and RSI Filter settings exist but are not fully implemented in the current code. Future versions may incorporate these filters more directly.
How to Use
Add to Chart: Click “Indicators” → “Invite-Only Scripts” (or “My Scripts”) and select “Trend Vanguard Strategy.”
Configure Settings:
Adjust ZigZag Depth, Deviation, and Backstep to fine-tune pivot sensitivity.
Enable or disable each EMA to see how it aligns with market trends.
Toggle “Smooth Indicator Lines” on or off depending on whether you want repainting.
Backtest and Forward Test:
Use TradingView’s “Strategy Tester” tab to review hypothetical performance.
Remember that repainting can alter past signals if enabled.
Monitor Live:
Watch for breakout triangles or ZigZag labels to identify potential reversal or breakout trades in real time.
Disclaimer: This script is purely educational and not financial advice. Always combine it with sound risk management and thorough analysis. Enjoy exploring the script, and feel free to experiment with the different settings to match your trading style!
ZenAlgo - DetectorThis script combines multiple volume data sources, calculates several forms of volume-based metrics, displays a table for Spot vs. Perpetual volumes, and visualizes several technical elements (such as cumulative delta, divergences, fractals, and specialized moving averages). The primary objective is to help analyze volume activity across different exchanges, compare Spot vs. Perpetual markets, and observe how shifting volumes may coincide with price action characteristics. This description aims to clarify each component, explain how the calculations are performed, and show you how to interpret the various chart markings.
Why Combine These Metrics in One Script?
Many publicly available volume-related tools focus only on a single exchange or a single type of volume (like spot or futures). This script merges multiple exchange sources for spot and perpetual data into a unified view. By doing so, users can detect discrepancies or confirm alignment between different markets without juggling multiple indicators. It also processes volume-derived signals (delta, divergences, fractals, etc.) in one place, sparing you from manually combining various standalone scripts. Through this integration, it becomes easier to observe how price and volume interact across different market segments.
Core Concept: Aggregated Volume
The script begins by collecting volumes from multiple exchanges in two categories:
Spot volumes – Typically aggregated under symbols ending with "USDT" or a user-selected currency, and
Perpetual volumes – From perpetual futures contracts (e.g., symbols ending in "USD.P" or "USDT.P").
All these exchange volumes are requested via the built-in request.security() function in a single line for each exchange. The user can enable or disable each exchange in the inputs. The script then calculates an "aggregated volume" for Spot, an aggregated volume for Perpetual, and an overall combined total.
This aggregated volume is used later to break down how much of each bar's volume can be considered "buy" or "sell" based on the bar's candle structure (body vs. wicks).
Volume-Based Calculations: Buy vs. Sell Volume and Delta
For each bar, the script estimates how much of the aggregated volume can be associated with a "buy side" and a "sell side."
Volume Buy is computed if the bar's close is above the open , giving more weight to the candle's body and allocating some portion of volume to the wicks as well.
Volume Sell is similarly computed if the bar's close is below the open .
This results in a Delta value: Delta = (Buy Volume) – (Sell Volume).
Additionally, the script accumulates these values over a user-defined "lookback length" to provide Cumulative Delta . This can help show longer-term directional volume bias.
Table: Spot vs. Perpetual Comparison
There is a toggle ("Show Spot vs Perpetual Table") that displays an on-chart table comparing volumes:
Buy Volume and Sell Volume for each aggregated category (Spot, Perp, and their sum).
Delta (the difference between Buy and Sell).
Percentage breakdowns of buy vs. sell portions.
This table only appears on the most recent bar and helps users quickly assess how Spot and Perpetual volumes compare, plus the overall total.
PVSRA Color Coding
A "PVSRA-style" color approach classifies each bar based on volume and candle range:
Climax Up (lime) or Climax Down (red) occurs if volume is extremely high relative to a simple moving average of volume and range.
Above-Average Up (blue) or Down (fuchsia) occurs if volume is moderately higher than average.
Otherwise, colors fall back to neutral up/down colors.
This allows you to spot potentially high-volume "climax" bars vs. bars with only moderate or typical volume levels.
Fractals and Divergences
The script detects certain fractal points on the aggregated volumes (sum of buy or sell volumes). It looks for a 5-bar pattern (with the current bar in the middle for top or bottom fractals).
When a fractal is confirmed on buy volume, the script checks if new higher price highs coincide with lower buy-volume peaks (or vice versa) to highlight regular or hidden divergences.
Similar logic is applied on the sell-volume side if new lower price lows occur alongside higher sell-volume troughs (or the opposite).
If enabled in the settings, lines and labels may appear on the chart to mark these divergence points.
"Delta Dot" Events
This script draws small circles above or below bars when the total delta changes magnitude relative to the previous bar by certain user-defined multipliers. It segregates "tiny," "small," "large," and "extra" expansions in bullish or bearish delta.
Bullish Dots : Appear above the bar when the new positive delta is multiple times bigger than the previous positive delta.
Bearish Dots : Appear below the bar in a similar fashion for negative delta.
These dots emphasize large or sudden shifts in buy/sell pressure from one bar to the next.
Delta MA and its Direction
A moving average is calculated on the total delta and optionally multiplied by a factor (in the code, by 4) to make it visually prominent. The user can pick from SMA, EMA, WMA, RMA, or HMA as the smoothing technique.
Delta MA Direction : The script compares the current delta MA to a short SMA of itself to define whether it is rising or falling.
A color is assigned—blue if rising, orange if falling, gray if they're roughly equal.
This helps quickly visualize longer-term momentum in the net delta metric.
Divergences on the Delta MA
After computing the "Delta MA" line, the script detects pivot highs or lows on that line. If the price makes a new high but the Delta MA pivot is lower (and vice versa), it draws lines and small labels indicating potential divergence.
Bearish Divergence : Price makes a higher high, while the Delta MA pivot forms a lower high.
Bullish Divergence : Price makes a lower low, while the Delta MA pivot forms a higher low.
RSI + MFI Computation
The script also calculates a simplified form of RSI+MFI by comparing (close – open) / (high – low) * a multiplier , then smoothing it with a simple average. This is purely for an optional observational measure to see if the price action is leaning bullish or bearish in terms of these combined indicators.
EMA Overlay and Diamond Shapes
There are two standard EMAs (13 and 21). The script checks whether price is above or below these EMAs, in addition to other conditions (like changes in delta, volume, or RSI+MFI direction) to draw diamond shapes at the top or bottom of the chart:
Green Diamonds near the bottom if the conditions line up to suggest that the environment is more favorable for bullish pressure.
Red Diamonds near the top if the environment suggests more bearish pressure.
These diamonds come in two sizes:
Normal – More pronounced, typically plotted if RSI+MFI result is above/below zero.
Small – Plotted if RSI+MFI is on the other side of that threshold.
An optional "Hardcore Mode" adds special tiny diamonds under specific delta color/condition mismatches.
How to Interpret the Chart Elements
Line Plots of Buy and Sell Volumes : A positive line for buy volume, a negative line for sell volume, and a zero-line for reference. This provides at-a-glance perspective on how buy or sell volumes add up per bar.
Histogram "Total Delta" : A color-coded bar that quickly shows whether overall buy vs. sell volume is dominant. The color is governed by the PVSRA logic (e.g., potential climax or above-average conditions).
Volume Table (when enabled): Summarizes volumes in numeric and percentage form for Spot, Perp, and total categories on the last bar.
Delta Dots : Small circles highlighting abrupt changes in delta magnitude. Larger multiples indicate bigger jumps compared to the previous bar.
Fractals & Divergence Lines : Connect pivot points in buy/sell volume or in the Delta MA line with price highs/lows to indicate potential divergences.
Delta MA Plot : Smooth curve (scaled up x4) to reflect longer-term accumulation or distribution in the delta. Colored by whether the MA is above or below a short average of itself.
Diamonds : Appear when certain volume, price, RSI+MFI, and delta conditions converge. Green diamonds near the bottom typically coincide with bullish conditions, red diamonds near the top with bearish conditions.
Practical Usage Notes
Use the Spot vs. Perp breakdown to see if these two market segments differ significantly in their contributions to total volume. This can be informative when a certain type of market (futures vs. spot) might be "driving" price action.
The PVSRA color scheme highlights "climax" or "above-average" volume bars, which can sometimes appear around major reversals or breakouts.
Observing divergences in aggregated buy/sell volume (or in the Delta MA line) can provide additional context on whether certain price moves are backed by strong volume involvement.
The script's fractal divergences rely on short pivot detection. Signals will appear only after enough bars have passed for confirmation, so these are effectively "after-the-fact" notations to illustrate possible volume/price divergences.
The diamonds do not necessarily instruct any buy/sell action; rather, they mark conditions where multiple volume and momentum criteria line up in one direction.
Important Considerations
This script displays aggregated volumes from potentially multiple exchanges. Each exchange or pair might have different time zones, liquidity, or data availability, which can occasionally result in incomplete or zero values.
All references to "buy" or "sell" volume are approximate breakdowns based on candle structure. They are not absolute measures of real-time order flow.
Divergences and fractal points are provided strictly for analytical insight. They can repaint or shift if the fractal conditions were not fully confirmed in real time.
The color-coded lines, histograms, diamonds, and tables are strictly to guide analysis of volume fluctuations and do not claim to predict future price performance.
If you enable "Hardcore Mode," you will see additional diamond markers. This mode is mainly intended as an extra highlight of certain "contradictory" delta conditions.
Summary
The "ZenAlgo - Detector" script brings together a variety of volume-based analyses:
Aggregated volumes from multiple exchanges
A breakdown into Spot vs. Perpetual activity
Delta calculations, fractal divergences, and a specialized Delta Moving Average
Color-coded bars reflecting possible PVSRA concepts
A table to highlight numeric differences and percentages
Additional overlays (e.g., diamonds, RSI+MFI synergy, etc.)
In contrast to many free, single-exchange indicators, this script centralizes multiple exchange volumes in one place, making it easier to observe and compare volume flows across different market types (spot vs. perpetual). Users no longer need to rely on scattered tools or separate overlays to check volume divergences, fractals, or specialized MA calculations—everything is unified here. By carefully monitoring the table, Delta histogram, color-coded bars, divergence lines, and diamond markers, traders can more comprehensively evaluate how volume and price interact. Each plot is designed to showcase different aspects of volume flow—such as whether spot or derivatives markets dominate, if volume is skewed toward buying or selling, and if there are divergences between volume momentum and price movement.
All computations are displayed to help you carry out a more informed market analysis. It is strongly advised to combine these observations with other risk management or analytical methods, rather than relying on any single indicator alone.
Multi-Indicator Signals with Selectable Options by DiGetMulti-Indicator Signals with Selectable Options
Script Overview
This Pine Script is a multi-indicator trading strategy designed to generate buy/sell signals based on combinations of popular technical indicators: RSI (Relative Strength Index) , CCI (Commodity Channel Index) , and Stochastic Oscillator . The script allows you to select which combination of signals to display, making it highly customizable and adaptable to different trading styles.
The primary goal of this script is to provide clear and actionable entry/exit points by visualizing buy/sell signals with arrows , labels , and vertical lines directly on the chart. It also includes input validation, dynamic signal plotting, and clutter-free line management to ensure a clean and professional user experience.
Key Features
1. Customizable Signal Types
You can choose from five signal types:
RSI & CCI : Combines RSI and CCI signals for confirmation.
RSI & Stochastic : Combines RSI and Stochastic signals.
CCI & Stochastic : Combines CCI and Stochastic signals.
RSI & CCI & Stochastic : Requires all three indicators to align for a signal.
All Signals : Displays individual signals from each indicator separately.
This flexibility allows you to test and use the combination that works best for your trading strategy.
2. Clear Buy/Sell Indicators
Arrows : Buy signals are marked with upward arrows (green/lime/yellow) below the candles, while sell signals are marked with downward arrows (red/fuchsia/gray) above the candles.
Labels : Each signal is accompanied by a label ("BUY" or "SELL") near the arrow for clarity.
Vertical Lines : A vertical line is drawn at the exact bar where the signal occurs, extending from the low to the high of the candle. This ensures you can pinpoint the exact entry point without ambiguity.
3. Dynamic Overbought/Oversold Levels
You can customize the overbought and oversold levels for each indicator:
RSI: Default values are 70 (overbought) and 30 (oversold).
CCI: Default values are +100 (overbought) and -100 (oversold).
Stochastic: Default values are 80 (overbought) and 20 (oversold).
These levels can be adjusted to suit your trading preferences or market conditions.
4. Input Validation
The script includes built-in validation to ensure that oversold levels are always lower than overbought levels for each indicator. If the inputs are invalid, an error message will appear, preventing incorrect configurations.
5. Clean Chart Design
To avoid clutter, the script dynamically manages vertical lines:
Only the most recent 50 buy/sell lines are displayed. Older lines are automatically deleted to keep the chart clean.
Labels and arrows are placed strategically to avoid overlapping with candles.
6. ATR-Based Offset
The vertical lines and labels are offset using the Average True Range (ATR) to ensure they don’t overlap with the price action. This makes the signals easier to see, especially during volatile market conditions.
7. Scalable and Professional
The script uses arrays to manage multiple vertical lines, ensuring scalability and performance even when many signals are generated.
It adheres to Pine Script v6 standards, ensuring compatibility and reliability.
How It Works
Indicator Calculations :
The script calculates the values of RSI, CCI, and Stochastic Oscillator based on user-defined lengths and smoothing parameters.
It then checks for crossover/crossunder conditions relative to the overbought/oversold levels to generate individual signals.
Combined Signals :
Depending on the selected signal type, the script combines the individual signals logically:
For example, a "RSI & CCI" buy signal requires both RSI and CCI to cross into their respective oversold zones simultaneously.
Signal Plotting :
When a signal is generated, the script:
Plots an arrow (upward for buy, downward for sell) at the corresponding bar.
Adds a label ("BUY" or "SELL") near the arrow for clarity.
Draws a vertical line extending from the low to the high of the candle to mark the exact entry point.
Line Management :
To prevent clutter, the script stores up to 50 vertical lines in arrays (buy_lines and sell_lines). Older lines are automatically deleted when the limit is exceeded.
Why Use This Script?
Versatility : Whether you're a scalper, swing trader, or long-term investor, this script can be tailored to your needs by selecting the appropriate signal type and adjusting the indicator parameters.
Clarity : The combination of arrows, labels, and vertical lines ensures that signals are easy to spot and interpret, even in fast-moving markets.
Customization : With adjustable overbought/oversold levels and multiple signal options, you can fine-tune the script to match your trading strategy.
Professional Design : The script avoids clutter by limiting the number of lines displayed and using ATR-based offsets for better visibility.
How to Use This Script
Add the Script to Your Chart :
Copy and paste the script into the Pine Editor in TradingView.
Save and add it to your chart.
Select Signal Type :
Use the "Signal Type" dropdown menu to choose the combination of indicators you want to use.
Adjust Parameters :
Customize the lengths of RSI, CCI, and Stochastic, as well as their overbought/oversold levels, to match your trading preferences.
Interpret Signals :
Look for green arrows and "BUY" labels for buy signals, and red arrows and "SELL" labels for sell signals.
Vertical lines will help you identify the exact bar where the signal occurred.
Tips for Traders
Backtest Thoroughly : Before using this script in live trading, backtest it on historical data to ensure it aligns with your strategy.
Combine with Other Tools : While this script provides reliable signals, consider combining it with other tools like support/resistance levels or volume analysis for additional confirmation.
Avoid Overloading the Chart : If you notice too many signals, try tightening the overbought/oversold levels or switching to a combined signal type (e.g., "RSI & CCI & Stochastic") for fewer but higher-confidence signals.
Cumulative Buying and Selling Volume with 3 Lookback PeriodsScript Overview:
This script is designed to help traders identify market momentum by analyzing buying and selling volume. It calculates the cumulative buying and selling pressure over three different lookback periods, providing insights into whether the bulls or bears are dominating at any given time. The script does this by computing the cumulative buying and selling volume for each period and comparing them through exponential moving averages (EMA) to smooth out short-term fluctuations.
Purpose and Use:
The primary goal of this script is to highlight shifts in market sentiment based on volume dynamics. Volume is a critical component in market analysis, often signaling the strength behind price movements. By focusing on cumulative buying and selling pressure, the script gives traders an idea of whether the market is trending towards more buying or selling during specific periods. Traders can use this tool to:
Identify potential entry points when buying pressure is strong.
Recognize potential selling opportunities when selling pressure is increasing.
Detect periods of indecision when neither buying nor selling dominates.
Key Concepts:
1. Buying Volume (BV):
The buying volume is calculated based on the price range of each candle. It represents the volume allocated to the bullish side of the market:
When the close is near the high, the buying volume is higher.
Formula: BV = volume * (close - low) / (high - low).
2. Selling Volume (SV):
Similarly, selling volume is derived based on the position of the close relative to the low:
When the close is near the low, selling volume is higher.
Formula: SV = volume * (high - close) / (high - low)
3. Lookback Periods:
The script allows users to define three different lookback periods (5, 10, and 20 by default). These periods smooth out the cumulative buying and selling volumes using EMA calculations:
Shorter periods capture more immediate changes in volume dynamics.
Longer periods provide a broader perspective on market trends.
4. Cumulative Volume Calculation:
For each lookback period, cumulative buying and selling volumes are tracked separately and then smoothed with EMA:
emaBuyVol and emaSellVol are the smoothed values for buying and selling volumes over the lookback periods.
5. Market Pressure Comparison:
Buying Pressure: If the EMA of buying volume is greater than the EMA of selling volume for a particular lookback period, the script considers that buying pressure dominates for that period.
Selling Pressure: Conversely, if selling volume dominates over buying volume for a period, the script registers selling pressure.
6. Overall Market Pressure:
The script aggregates the buying and selling pressures from the three lookback periods to determine the overall market sentiment:
If the majority of periods show buying pressure, the market is bullish.
If the majority show selling pressure, the market is bearish.
If neither side dominates, it suggests a neutral or indecisive market.
Visual Cues:
The script provides visual feedback to help traders quickly interpret the market pressure:
Background Color:
Green (#2bff00) when buying pressure dominates.
Red (#ff0000) when selling pressure dominates.
Gray (#404040) when there is no clear dominance.
Bar Color: The script also colors the price bars based on the dominant market pressure:
Green for buying pressure.
Red for selling pressure.
Gray for neutral or balanced market pressure.
Reset Mechanism:
At the start of each new candle, the cumulative volumes for all three periods are reset to zero. This ensures that the cumulative volumes are only measured for the current candle, preventing carryover from previous periods that could distort the analysis.
How Traders Can Use This Script:
Trend Confirmation: Traders can use the script as a trend confirmation tool. When the background turns green (buying dominance), it suggests bullish momentum. When red, bearish momentum is likely. This information can be used to confirm existing positions or signal new trades in the direction of the market pressure.
Reversal Detection: A sudden shift in the background color (from green to red or vice versa) can indicate a potential reversal. This can be particularly useful when combined with other technical indicators such as price action or support/resistance levels.
Multiple Timeframes: Since the script supports three different lookback periods, it provides a comprehensive view of market pressure across short-term, medium-term, and long-term perspectives. Traders can tailor the lookback periods based on their preferred timeframe to match their trading style, whether it’s intraday trading or longer-term swing trading.
Risk Management: The script's clear visual cues help traders manage risk by highlighting when selling pressure increases, allowing them to consider reducing long positions or tightening stop-losses.
display_valueOVERVIEW
This script is a tinny library for creating and displaying formatted values in TradingView scripts. It provides a structured way to present key information like titles, percentages, currency values, decimals, and integers with clear formatting. This allows you to coordinate your strings in advance and hold one item to use for calling your string to a label, box, table.. Made for day to day use of most typical use cases, more advanced techniques should be used for complicated scenarios.
Building Blocks
User Defined Types (UDTs)
The script defines a UDT called `DisplayValue` to encapsulate the components of a display value:
* title : The title or label of the value.
* format_string : The string used to format the value (e.g., "{0} - 1,number,percent}").
* value : The actual value to be displayed.
* format : An enum value specifying the desired format (percent, currency, etc.).
Enums
The `DisplayFormat` enum provides predefined constants for various formatting options, making the code more readable and less prone to errors.
Functions
* create() : This function creates a new `DisplayValue` instance. It takes the title, value, and desired format as arguments and generates the appropriate format string.
* to_string() : This function converts a `DisplayValue` instance into a formatted string ready for display on the chart.
How to Use
1. Import the library:
import kaigouthro/display_value/1as dv
2. Create a DisplayValue instance:
myValue = dv.create("My Percentage", 0.5, dv.DisplayFormat.percent)
3. Convert it to a string:
formattedString = dv.to_string(myValue)
4. Display the formatted string:
label.new(bar_index, high, formattedString)
Example
//@version=5
import kaigouthro/display_value/1 as dv
myValue = dv.create("Profit", 0.15, dv.DisplayFormat.percent)
formattedString = dv.to_string(myValue)
label.new(bar_index, high, formattedString)
This will display a label on the chart with the text "Profit - 15%".
### Notes
* The library handles the formatting details, making it easier to display values consistently in your scripts.
* The use of enums and UDTs improves code organization and readability.
--------
Library "display_value"
create(display_name, display_value, display_format)
Gets the appropriate format string based on the display format.
Parameters:
display_name (string) : (string) The name of the display value. Default is na.
display_value (float)
display_format (series DisplayFormat)
Returns: (DisplayValue) A new DisplayValue instance with the formatted value.
to_string(item)
Converts the display value to a string with the specified format.
Parameters:
item (DisplayValue) : (DisplayValue) The display value to convert to a string.
Returns: (string) The string representation of the display value.
DisplayValue
Structure representing a display value.
Fields:
title (series string) : (string) The title of the display value.
format_string (series string) : (string) The format string to use for display.
value (series float) : (float) The value to display.
format (series DisplayFormat) : (DisplayFormat) The format to use.
FxASTLite [ALLDYN]This script, titled "FxASTLite " or "FxAST LX," is a Pine Script indicator designed for trading systems that use multiple technical analysis tools such as EMAs (Exponential Moving Averages) and PSAR (Parabolic Stop and Reverse). The script is overlaid on the price chart, providing insights into market trends and potential buy or sell signals.
### Key Features:
1. **EMA (Exponential Moving Averages)**
- The script plots several EMAs (5, 8, 13, 21, 50, and 200) based on the Heiken Ashi close price. EMAs are helpful in identifying trends, momentum, and potential entry/exit points.
- The script highlights key relationships between the EMAs, such as the crossover or crossunder of faster EMAs (like the 8 EMA) with slower ones (like the 21 EMA). These events often signal potential trend reversals or continuation.
2. **PSAR (Parabolic Stop and Reverse)**
- The script uses the PSAR indicator, which is a trend-following indicator that highlights potential points where the market might reverse direction.
- The script identifies bullish PSAR flips (when the PSAR value moves below the price, signaling a potential upward trend) and bearish PSAR flips (when the PSAR value moves above the price, signaling a downward trend).
- The PSAR flips are used to generate buy or sell signals.
3. **Heiken Ashi Candles**
- It uses Heiken Ashi candles to smooth out price action and better identify trends. Heiken Ashi candles help filter out market noise and make trends clearer compared to regular candlestick charts.
4. **Session Times**
- The script allows traders to track different market sessions (e.g., London, New York, Asia). It identifies and allows users to analyze price action during specific trading hours.
5. **Buy and Sell Signals**
- The script defines multiple conditions for buy and sell signals:
- **Buy Signals**: Generated when certain conditions are met, such as the price moving above key EMAs, bullish PSAR flips, and bullish Heiken Ashi candles.
- **Sell Signals**: Generated when conditions like bearish PSAR flips, bearish candles, and price moving below EMAs are met.
- These signals are designed to guide traders on when to enter or exit trades.
6. **Alerts**
- The script comes with alert conditions, which can be used to set automated alerts for when buy or sell signals occur. This allows the trader to stay informed without constantly monitoring the chart.
### How It Works:
1. **EMA-Based Trend Identification:**
- EMAs help identify the overall market trend. For example, if the 8-period EMA crosses above the 21-period EMA, it signals a potential bullish trend. Conversely, if the 8 EMA crosses below the 21 EMA, it may signal a bearish trend.
2. **PSAR for Trend Reversals:**
- PSAR values provide insight into potential trend reversals. When the PSAR flips (moving from above to below the price or vice versa), the script highlights these flips as potential buy/sell signals.
3. **Combining Signals:**
- The script combines multiple indicators (EMAs, PSAR, and Heiken Ashi candles) to provide stronger confirmations of potential entry and exit points. By using multiple indicators, the script reduces the likelihood of false signals.
4. **Visual Overlay:**
- The script overlays key information on the price chart, such as EMAs and PSAR dots, which makes it easy for traders to visualize market conditions in real-time.
### Benefits of Using This Script:
1. **Trend Identification:**
- The combination of EMAs and PSAR helps traders identify trends early. The visual display of these indicators directly on the chart makes it easier to detect shifts in market sentiment.
2. **Smoothed Candlesticks:**
- By using Heiken Ashi candles, the script smooths out noisy price action, making it easier to spot trends and reduce the likelihood of making impulsive decisions based on short-term volatility.
3. **Buy and Sell Signals:**
- The script generates clear buy and sell signals based on a combination of multiple technical factors (EMAs, PSAR, and Heiken Ashi). This can help traders time their entries and exits more effectively.
4. **Multi-Timeframe Alerts:**
- With the built-in alert functionality, traders can set up alerts for specific signals (like a PSAR flip or EMA crossover) across different timeframes. This helps traders stay informed without having to watch the chart constantly.
5. **Session Management:**
- The ability to track different market sessions allows traders to focus on times of high liquidity and volatility, which are often the best times to trade.
6. **Customizability:**
- The script allows traders to customize the settings for each indicator (e.g., EMA lengths, PSAR settings, session times) according to their trading preferences.
### Use Cases:
- **Trend Trading:**
- Traders who follow market trends can benefit from this script as it uses EMAs and PSAR to identify trending conditions and potential trend reversals.
- **Swing Trading:**
- Swing traders looking to capitalize on medium-term market moves can use the script to identify optimal entry and exit points based on momentum shifts.
- **Intraday Trading:**
- The inclusion of market sessions and real-time alerts makes the script useful for intraday traders who want to focus on specific trading hours, such as the opening of the London or New York sessions.
Overall, this script is designed for traders who rely on technical indicators to guide their trading decisions. The combination of EMAs, PSAR, and Heiken Ashi candles provides a well-rounded view of market trends and potential entry/exit points, making it a powerful tool for traders looking to improve their strategy.
Universal Algo [Coff3eG]Universal Algo By G
Overview:
Universal Algo By G is a comprehensive LONG-ONLY trading strategy specifically designed for medium to long-term use in cryptocurrency markets, particularly Bitcoin. This algorithm can be manually adjusted to fit the volatility of specific coins, ensuring the best possible results. While it does not generate a large number of trades due to the nature of bull and bear market cycles, it has been rigorously backtested and forward-tested to ensure the strategy is not overfitted.
Core Features:
Integrated Systems: Universal Algo is built around five core systems, each contributing unique analytical perspectives to enhance trade signal reliability. These systems are designed to identify clear trend opportunities for significant gains while also employing logic to navigate through ranging markets effectively.
Optional Ranging Market Filter: Helps filter out noise, potentially enhancing signal clarity.
Market State Detection: Identifies four distinct market states:
Trending
Ranging
Danger (Possible top)
Possible Bottom
Global Liquidity Indicator (GLI) Integration: Leverages GLI values to identify positive liquidity trends.
Volatility Bands: Provides insights into market volatility.
Top and Bottom Detection: Shows possible bottoms with green backgrounds and red backgrounds for possible top detection.
The Market State Detection, GLI, Volatility Bands, and Top and Bottom Detection feature all serve as an expectation management feature.
Additional Features:
Optional Metrics Table: Displays strategy metrics and statistics, providing detailed insights into performance.
Customization Options: The script offers a range of user inputs, allowing for customization of the backtesting starting date, the decision to display the strategy equity curve, among other settings. These inputs cater to diverse trading needs and preferences, offering users control over their strategy implementation.
Operational Parameters:
Customizable Inputs: Users can adjust thresholds to match the coin's volatility, enhancing strategy performance.
Transparency and Logic Insight: While specific calculation details and proprietary indicators are integral to maintaining the uniqueness of Universal Algo, the strategy is grounded on well-established financial analysis techniques. These include momentum analysis, volatility assessments, and adaptive thresholding, among others, to formulate its trade signals. Notably, no single indicator is used in isolation; each indicator is combined with another to enhance signal accuracy and robustness. Some of the indicators include customized versions of the TEMA, Supertrend, Augmented Dickey-Fuller (ADF), and Weekly Positive Directional Movement Index (WPDM), all integrated together to create a cohesive and effective trading strategy.
System Operation:
Universal Algo works by taking the average score of the five core systems used for the signals. Three of these systems have been lengthened out to function as longer-term systems, while the remaining two operate at a slightly faster speed. This combination and averaging of systems help to balance the overall strategy, ensuring it maintains the right amount of speed to remain effective for medium to long-term use with minimal noise. The average score is then compared against customizable thresholds. The strategy will go long if the average score is above the threshold and short if it is below the threshold. This averaging mechanism helps to smooth out individual system anomalies and provides a more robust signal for trading decisions.
Originality and Usefulness:
Universal Algo is an original strategy that combines multiple proprietary and customized indicators to deliver robust trading signals. The strategy integrates various advanced indicators and methodologies, including:
System Indicator: Calculates a cumulative score based on recent price movements, aiding in trend detection.
Median For Loop: Utilizes percentile rank calculations of price data to gauge market direction.
Volatility Stop: A modified volatility-based stop-loss indicator that adjusts based on market conditions.
Supertrend: A customized supertrend indicator that uses percentile ranks and ATR for trend detection.
RSI and DEMA: Combines a modified RSI and DEMA for overbought/oversold conditions.
TEMA: Uses 3 different types of MA for trend detection and standard deviation bands for additional confirmation.
Detailed Explanation of Components and Their Interaction:
RSI (Relative Strength Index): Used to identify overbought and oversold conditions. In Universal Algo, RSI is combined with DEMA (Double Exponential Moving Average) to smooth the price data and provide clearer signals.
ATR (Average True Range): Used to measure market volatility. ATR is incorporated into the Volatility Stop and Supertrend indicators to adjust stop-loss levels and trend detection based on current market conditions.
DEMA (Double Exponential Moving Average): Provides a smoother price trend compared to traditional moving averages, reducing lag and making it easier to identify trend changes.
Modified TEMA (Triple Exponential Moving Average): Similar to DEMA but provides even greater smoothing, reducing lag further and enhancing trend detection accuracy.
Volatility Stop: Utilizes ATR to dynamically set stop-loss levels that adapt to changing market volatility. This helps in protecting profits and minimizing losses.
Customized Supertrend: Uses ATR and percentile ranks to determine trend direction and strength. This indicator helps in capturing major trends while filtering out market noise.
Median For Loop: Calculates percentile ranks of price data over a specified period to assess market direction. This helps in identifying potential reversals and trend continuations.
HMA (Hull Moving Average): A fast-acting moving average that reduces lag while maintaining smoothness. It helps in quickly identifying trend changes.
SMA (Simple Moving Average): A traditional moving average that provides baseline trend information. Combined with HMA and other indicators, it forms a comprehensive trend detection system.
Universal Algo offers a sophisticated blend of advanced indicators and proprietary logic that is not available in free or open-source scripts. Here are some reasons why it is worth paying for:
Customization and Flexibility: The strategy provides a high degree of customization, allowing users to adjust various parameters to suit their trading style and market conditions. This flexibility is often not available in free scripts.
Proprietary Indicators: The use of proprietary and customized indicators such as the TEMA, Supertrend, ADF, and WPDM ensures that the strategy is unique and not replicable by free or open-source scripts.
Integrated Systems: The strategy combines multiple systems and indicators to provide a more comprehensive and reliable trading signal. This integration helps to smooth out anomalies and reduces noise, providing clearer trading opportunities.
Rigorous Testing: Universal Algo has undergone extensive backtesting and forward-testing to ensure its robustness and reliability. The results demonstrate its ability to perform well under various market conditions, offering users confidence in its effectiveness.
Detailed Metrics and Analysis: The optional metrics table provides users with detailed insights into the strategy's performance, including metrics like equity, drawdown, Sharpe ratio, and more. This level of detail helps traders make informed decisions.
Value Addition: By providing a strategy that combines advanced indicators, customization options, and thorough testing, Universal Algo adds significant value to traders looking for a reliable and adaptable trading tool.
Realistic Trading Conditions:
Backtesting and Forward-Testing: Rigorous testing ensures performance and reliability, with a focus on prudent risk management. Default properties include an initial capital of $1000, 0 pyramiding, 20 slippage, 0.05% commission, and using 5% of equity for trades.
The strategy is designed and tested with a focus on achieving a balance between risk and reward, striving for robustness and reliability rather than unrealistic profitability promises. Realistic trading conditions are considered, including appropriate account size, commission, slippage, and sustainable risk levels per trade.
Concluding Thoughts:
Universal Algo By G is offered to the TradingView community as a robust tool for enhancing market analysis and trading strategies. It is designed with a commitment to quality, innovation, and adaptability, aiming to provide valuable insights and decision support across various market conditions. Potential users are encouraged to evaluate Universal Algo within the context of their overall trading approach and objectives.